package pe.edu.upc.dew.grupo02.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.grupo02.model.*;

public class HorarioDao extends SimpleJdbcDaoSupport implements IHorario {

	private  RowMapper<Horario> mapper;
	
	public HorarioDao()
	{
			mapper = new RowMapper<Horario>() {
	        public Horario mapRow(ResultSet rs, int rowNum) throws SQLException {
	            Horario horario = new Horario();
	            horario.setCoHorario(rs.getInt("coHorario"));
	            horario.setHora(rs.getString("hora"));
	            
	            Pelicula pelicula=new Pelicula();
	            pelicula.setCoPelicula(rs.getInt("coPelicula"));
	            pelicula.setNombre(rs.getString("nombrePelicula"));
	            pelicula.setDirector(rs.getString("director"));
	            pelicula.setActores(rs.getString("actores"));
	            pelicula.setEstado(rs.getInt("estado"));
	            pelicula.setFl3d(rs.getBoolean("dPelicula"));
	            pelicula.setPais(rs.getString("pais"));
	            pelicula.setSinopsis(rs.getString("sinopsis"));
	            
	            Sala sala=new Sala();
	            sala.setCoSala(rs.getInt("coSala"));
	            sala.setNombre(rs.getString("nombreSala"));
	            sala.setCapacidad(rs.getInt("capacidad"));
	            sala.setFl3d(rs.getBoolean("dSala"));
	            
	            horario.setPelicula(pelicula);
	            horario.setSala(sala);
	            
	            return horario;
	        }
	    };
	}
	
	@Override
	public void crear(Horario horario) {
		getSimpleJdbcTemplate().update(
				"insert into horario(cohorario,copelicula,cosala,hora) values(?,?,?,?)",
				horario.getCoHorario(),horario.getPelicula().getCoPelicula(),horario.getSala().getCoSala(),horario.getHora()); 
		
	}

	@Override
	public void eliminar(int codigo) {
		getSimpleJdbcTemplate().update("delete from horario where cohorario=?", codigo);
		
	}

	@Override
	public List<Horario> getHorariosPorPelicula(int coPelicula) {
		return getSimpleJdbcTemplate().query("select Ho.coHorario,Ho.hora,Ho.copelicula,Ho.cosala,Pe.actores," +
												"Pe.director,Pe.estado,Pe.fl3d dPelicula,Pe.nombre nombrePelicula,Pe.pais," +
												"Pe.sinopsis,Sa.capacidad,sa.fl3d dSala,sa.nombre nombreSala from horario Ho  join pelicula Pe on Ho.coPelicula=Pe.coPelicula  join Sala Sa on Ho.coSala=Sa.coSala where Ho.coPelicula=?",mapper, coPelicula);
	}

	@Override
	public Horario getHorario(int coHorario) {
		    return getSimpleJdbcTemplate().queryForObject("select Ho.coHorario,Ho.hora,Ho.copelicula,Ho.cosala,Pe.actores," +
					"Pe.director,Pe.estado,Pe.fl3d dPelicula,Pe.nombre nombrePelicula,Pe.pais," +
					"Pe.sinopsis,Sa.capacidad,sa.fl3d dSala,sa.nombre nombreSala from horario Ho  join pelicula Pe on Ho.coPelicula=Pe.coPelicula  join Sala Sa on Ho.coSala=Sa.coSala where Ho.coHorario=?",mapper, coHorario);
	}

	
}
